উদাহরণ সহ SLF4J Logging এর জন্য Unit Testing

SLF4J এবং Unit Testing - এসএলএফ৪জে (SLF4J) - Java Technologies

247

SLF4J লগিং ব্যবহার করে Unit Testing করার সময় নিশ্চিত করতে হয় যে লগ মেসেজগুলো সঠিকভাবে তৈরি হচ্ছে এবং কাঙ্খিত লেভেলে (INFO, DEBUG, WARN, ERROR) আউটপুট হচ্ছে। Unit Testing-এ লগ আউটপুট যাচাই করা ডিবাগিং এবং লগিং লজিকের সঠিকতা যাচাই করার জন্য গুরুত্বপূর্ণ।


SLF4J Logging টেস্ট করার পদ্ধতি

SLF4J লগিং যাচাই করার জন্য Mockito বা LogCaptor লাইব্রেরি ব্যবহার করা হয়। LogCaptor একটি জনপ্রিয় টুল, যা সহজেই SLF4J লগিং যাচাই করতে দেয়।


উদাহরণ: LogCaptor ব্যবহার করে SLF4J Logging টেস্ট করা

Step 1: Maven ডিপেনডেন্সি যোগ করা

SLF4J এবং LogCaptor ডিপেনডেন্সি:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.11</version>
</dependency>
<dependency>
    <groupId>nl.altindag</groupId>
    <artifactId>log-captor</artifactId>
    <version>2.7.5</version>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.8.2</version>
</dependency>

Step 2: লগিং যুক্ত করা

ExampleLogger.java

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ExampleLogger {

    private static final Logger logger = LoggerFactory.getLogger(ExampleLogger.class);

    public void logInfoMessage(String message) {
        logger.info("INFO: {}", message);
    }

    public void logErrorMessage(String error) {
        logger.error("ERROR: {}", error);
    }
}

Step 3: Unit Test তৈরি করা

ExampleLoggerTest.java

import nl.altindag.log.LogCaptor;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class ExampleLoggerTest {

    @Test
    void testInfoLog() {
        // LogCaptor ব্যবহার করে SLF4J লগ ক্যাপচার করা
        LogCaptor logCaptor = LogCaptor.forClass(ExampleLogger.class);

        ExampleLogger logger = new ExampleLogger();
        logger.logInfoMessage("This is an info message.");

        // টেস্ট করা যে INFO লেভেলে লগ হয়েছে কি না
        assertEquals(1, logCaptor.getInfoLogs().size());
        assertTrue(logCaptor.getInfoLogs().get(0).contains("INFO: This is an info message."));
    }

    @Test
    void testErrorLog() {
        // LogCaptor ব্যবহার করে SLF4J লগ ক্যাপচার করা
        LogCaptor logCaptor = LogCaptor.forClass(ExampleLogger.class);

        ExampleLogger logger = new ExampleLogger();
        logger.logErrorMessage("This is an error message.");

        // টেস্ট করা যে ERROR লেভেলে লগ হয়েছে কি না
        assertEquals(1, logCaptor.getErrorLogs().size());
        assertTrue(logCaptor.getErrorLogs().get(0).contains("ERROR: This is an error message."));
    }
}

ব্যাখ্যা

  1. LogCaptor:
    • এটি SLF4J লগ মেসেজগুলো সহজেই ক্যাপচার এবং যাচাই করার জন্য ব্যবহার করা হয়।
    • LogCaptor.forClass(ClassName.class) নির্দিষ্ট ক্লাসের লগ ক্যাপচার করতে ব্যবহৃত হয়।
  2. Assertion:
    • assertEquals ব্যবহার করে নিশ্চিত করা হয় যে সঠিক সংখ্যক লগ মেসেজ তৈরি হয়েছে।
    • assertTrue ব্যবহার করে যাচাই করা হয় যে লগ মেসেজ কাঙ্খিত টেক্সট ধারণ করছে কি না।
  3. লগিং লেভেল যাচাই:
    • logCaptor.getInfoLogs() এবং logCaptor.getErrorLogs()-এর মাধ্যমে INFO এবং ERROR লেভেলের লগ যাচাই করা হয়।

Step 4: টেস্ট রান করা

টেস্ট চালানোর পরে আউটপুট:

INFO: This is an info message.
ERROR: This is an error message.

JUnit রিপোর্ট:

✔ testInfoLog PASSED
✔ testErrorLog PASSED

Mockito ব্যবহার করে SLF4J টেস্ট করার বিকল্প পদ্ধতি

LogCaptor না ব্যবহার করে Mockito দিয়ে SLF4J টেস্ট করা সম্ভব। তবে এটি একটু বেশি কনফিগারেশন প্রয়োজন:

ExampleLoggerTest.java (Mockito পদ্ধতি)

import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.slf4j.Logger;

import static org.mockito.Mockito.*;

public class ExampleLoggerTest {

    @Test
    void testInfoLogWithMockito() {
        Logger mockLogger = mock(Logger.class);

        ExampleLogger exampleLogger = new ExampleLogger();
        exampleLogger.logInfoMessage("Testing with Mockito.");

        verify(mockLogger, times(1)).info("INFO: {}", "Testing with Mockito.");
    }
}

উপসংহার

SLF4J লগিং যাচাই করার জন্য LogCaptor একটি সহজ এবং কার্যকর টুল। এটি লগিং লেভেল এবং মেসেজ যাচাই করতে ডেভেলপারদের সাহায্য করে। Mockito একটি বিকল্প পদ্ধতি হিসেবে ব্যবহার করা যেতে পারে, তবে এটি কিছুটা জটিল। Unit Testing-এর মাধ্যমে লগিং সঠিকভাবে কাজ করছে কি না তা যাচাই করলে অ্যাপ্লিকেশন ডিবাগিং এবং রক্ষণাবেক্ষণ সহজ হয়।


Content added By
Promotion

Are you sure to start over?

Loading...